#pragma once
#include "NeroGame\NGame.h"
//Directx
#include "DirectX\Light.h"
#include "DirectX\LightShader.h"
#include "DirectX\TextureShader.h"
#include "DirectX\ReflectionShader.h"
#include "DirectX\RenderTarget.h"
#include "Cube.h"
#include "Floor.h"

class CubeApp : public Game::NGame
{
	enum State
	{
		No_State,
		Texture_State,
		Refletion_State,
		Refletion_State_PRE,
		Light_State
	};
private:
	RTTI_DECLARATIONS(CubeApp, Game::NGame)

public:
	CubeApp(void);
	virtual ~CubeApp(void);
	virtual void Initialize(const std::string& scene);
	virtual void Deinitialize();
	virtual void Update(float gameTime);
	virtual void Render();
	virtual void EndGame();
	virtual void SetState(State state){ mCurrentState = state; }
	virtual void PreRender();
private:
	State mCurrentState;
	Cube* mCube;
	Floor* mFloor;
	Graphics::TextureShader* mTextureShader;
	Graphics::Light* mLight;
	Graphics::LightShader* mLightShader;
	Graphics::ReflectionShader* mReflectionShader;
	Graphics::RenderTarget* mRenderTarget;

	static CubeApp s_instance;
};

